Memory modules comprise any number of data words for storage of data. The data words typically comprise a plurality of bytes. For example, gigantic data words comprise 16 bytes. The memory is typically accessible in data word units. The contents of the memory are accessed by either a read or write to one or more complete data words.
Objects, such as data structures, are stored in memory. Although many objects comprise a whole number of bytes, many objects do no necessarily comprise a whole number of data words. The foregoing can occur for several reasons. In some cases, the objects require considerably less bytes than a single data word. Additionally, objects can be transported from one type of memory to another type of memory. While the object may comprise a whole number of the data words in the former type of memory, the object may not comprise a whole number of data words in the latter type of memory. It is, therefore, possible for an object to both start and end in the middle of a data word, in contrast to starting at the start of a data word and ending at the end of a data word.
For example, objects can comprise data structures for compressing video data. Video compression standards such as MPEG-2 use data structures, such as macroblocks, for compressing video data. During the decoding of compressed video data, a video decoder retrieves macroblocks from memory for decoding.
As noted above, the memory is accessible in data word units. In order to retrieve an object from memory, the data words storing the objects are retrieved. However, unless the objects start at the beginning of a data word and ends at the ending of a data word, retrieving the data words storing the object will include bytes that are not part of the object. Retrieving bytes that are not part of the objects can result in erroneous results from processing the objects.
In some cases, the foregoing is alleviated by starting all objects at the start of a data word. Where a an object is stored in a non-round number of data words, the remainder portion of the data words is padded with a pattern such as all zeroes. However, the foregoing represents inefficient memory usage, particularly in cases where the memory comprises large data words, such as gigantic data words.
Further limitations and disadvantages of conventional and traditional approaches will become apparent to one of skill in the art, through comparison of such systems with the present invention as set forth in the remainder of the present application with reference to the drawings.